//
// Created by LiuYou on 2021/10/26.
//

#include <iostream>


static const int BUF_SIZE = 1024;

int main(int argc, char** argv) {
    {
        char str[] = "123456";
        int number = atoi( str );
        fprintf( stdout, "%d\n", number );
    }

    {
        char str[] = "123a456";
        int number = atoi( str );
        fprintf( stdout, "%d\n", number );
    }
    // 运行结果
    /*
    /home/liuyou/CLionProjects/LinuxEnvironmentProgramming2/cmake-build-debug/src/io/IO-printf1
    123456
    123

    Process finished with exit code 0
     */

    {
        int year = 2021;
        int month = 1;
        int day = 1;

        // 我希望得到一个字符串, 这个字符串为 "2021-1-1"

        // 我不希望这样:
        printf( "%d-%d-%d\n", year, month, day );

        // 使用 sprintf(); 能够把多种不同的数据类型, 按照特定的格式, 放到一个字符串中去。
        char buf[BUF_SIZE]{};
        sprintf( buf, "%d-%d-%d", year, month, day );
        printf( "%s", buf );
        fputs( buf, stdout );

        /*
         * todo 笔记: 所以 sprintf(); 可以用成 atoi();的反向功能, itoa();
         *  但是没有提供 itoa(); 这个函数,
         *  所以 sprintf(); 是一个非常好用的函数。
         */
    }

    {
        // snprintf();
        // snprintf(); 是在 sprintf(); 上防范了越界。

    }


    return 0;
}
